package com.skyd.core.android.game.crosswisewar;

import com.skyd.core.game.crosswisewar.IBullet;
import com.skyd.core.game.crosswisewar.IEntity;
import com.skyd.core.game.crosswisewar.IObj;

public class Bullet extends Obj implements IBullet {

	@Override
	public IEntity[] getEncounterEntity() {
		for (IObj f : getParentScene().getChildrenList()) {
			if (f instanceof IEntity) {
				IEntity t = (IEntity) f;
				float l = t.getPositionInScene().getX() - t.getOccupyWidth() / 2;
				float r = l + t.getOccupyWidth();
				if (!t.getNation().equals(getSource().getNation())
						&& getPositionInScene().getX() >= l
						&& getPositionInScene().getX() <= r)
					return new IEntity[]{t};
			}
		}
		return null;
	}

	@Override
	public boolean move() {
		IEntity[] t = getEncounterEntity();
		if (t == null) {
			int v = getSource().getNation().getIsRighteous() ? getSpeed()
					: 0 - getSpeed();
			getPositionInScene().setX(getPositionInScene().getX() + v);
			return true;
		} else {
			getSource().hurtTo(t);
			removeFromScene();
			return false;
		}

	}

	/**
	 * 初始值为0。 功能注释：距离地面高度
	 */
	private int _Height = 0;

	/**
	 * 获取Height。 功能注释：距离地面高度
	 * 
	 * @return 当前的int类型的值
	 */
	public int getHeight() {
		return _Height;
	}

	/**
	 * 设置Height。 功能注释：距离地面高度
	 * 
	 * @param value
	 *            要设置的int类型值
	 */
	public void setHeight(int value) {
		_Height = value;
	}

	/**
	 * 设置Height为其默认值(0)。 功能注释：距离地面高度
	 */
	public void setHeightToDefault() {
		setHeight(0);
	}

	/**
	 * 初始值为null。 功能注释：来源
	 */
	private IEntity _Source = null;

	/**
	 * 获取Source。 功能注释：来源
	 * 
	 * @return 当前的IEntity类型的值
	 */
	public IEntity getSource() {
		return _Source;
	}

	/**
	 * 设置Source。 功能注释：来源
	 * 
	 * @param value
	 *            要设置的IEntity类型值
	 */
	public void setSource(IEntity value) {
		_Source = value;
	}

	/**
	 * 设置Source为其默认值(null)。 功能注释：来源
	 */
	public void setSourceToDefault() {
		setSource(null);
	}

	/**
	 * 初始值为1。 功能注释：速度
	 */
	private int _Speed = 1;

	/**
	 * 获取Speed。 功能注释：速度
	 * 
	 * @return 当前的int类型的值
	 */
	public int getSpeed() {
		return _Speed;
	}

	/**
	 * 设置Speed。 功能注释：速度
	 * 
	 * @param value
	 *            要设置的int类型值
	 */
	public void setSpeed(int value) {
		_Speed = value;
	}

	/**
	 * 设置Speed为其默认值(1)。 功能注释：速度
	 */
	public void setSpeedToDefault() {
		setSpeed(1);
	}

}
